//
//  YYStringEx.swift
//  字符串操作扩展
//
//  Created by yao_yu on 14-8-11.
//  Copyright (c) 2014年 yao_yu. All rights reserved.
//

import Foundation

extension String{
    var length:Int{
        return countElements(self)
    }
    
    // 字符串拆分(对应合并函数为join)
    func split(separator:String)->[String]{
        return componentsSeparatedByString(separator)
    }
    
    // 删除首尾字符
    func strip()->String{
        return stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
    }
    
    // 删除左侧字符
    func lstrip() -> String{
        // 从左向右找到第一个非空白字符(空格,回车,换行)
        if let range = rangeOfCharacterFromSet(NSCharacterSet.whitespaceAndNewlineCharacterSet().invertedSet) {
            return substringFromIndex(range.startIndex)
        }
        return ""
    }
    
    // 删除右侧字符
    func rstrip() -> String{
        // 从右向左查找第一个非空白字符(空格,回车,换行)
        if let range = rangeOfCharacterFromSet(NSCharacterSet.whitespaceAndNewlineCharacterSet().invertedSet, options: NSStringCompareOptions.BackwardsSearch) {
            return substringToIndex(range.endIndex)
        }
        return ""
    }
    
    // 前n个子字符串
    func first(n:Int) -> String{
        let _endIndex = advance(startIndex, n)
        return substringToIndex(_endIndex)
    }
    
    // 后n个子字符串
    func last(n:Int) -> String{
        let _startIndex = advance(endIndex, -n)
        return substringFromIndex(_startIndex)
    }
    
    // 从n开始的子字符串
    func from(n:Int) -> String{
        let _startIndex = advance(startIndex, n)
        return substringFromIndex(_startIndex)
    }
    
    // 从前到第n的子字符串
    func to(n:Int) -> String{
        let _endIndex = advance(startIndex, n)
        return substringToIndex(_endIndex)
    }
    
    // 字符串替换
    func replace(target: String, withString: String) -> String{
        return stringByReplacingOccurrencesOfString(target, withString: withString, options: NSStringCompareOptions.CaseInsensitiveSearch, range: nil)
    }
}
